//实现类实例........


//package shotgun.my.sweetutil.redis;
//
//import com.sun.org.slf4j.internal.Logger;
//import com.sun.org.slf4j.internal.LoggerFactory;
//
//import java.util.function.Consumer;
//import java.util.function.Function;
//
///**
// * @author wulingming
// **/
//public class RedisLockUtils extends AbstractRedisLock {
//    private static final Logger LOGGER = LoggerFactory.getLogger(RedisLockUtils.class);
//
//    private Redis redis;
//
//    protected RedisLockUtils(Redis redis, String lockKey) {
//        super(lockKey);
//        this.redis = redis;
//    }
//
//    protected RedisLockUtils(Redis redis, String lockKey, int timeoutMsecs) {
//        super(lockKey, timeoutMsecs);
//        this.redis = redis;
//    }
//
//    protected RedisLockUtils(Redis redis, String lockKey, int timeoutMsecs, int expireMsecs) {
//        super(lockKey, timeoutMsecs, expireMsecs);
//        this.redis = redis;
//    }
//
//    @Override
//    protected String get(String key) {
//        return redis.process(commands -> commands.get(key));
//    }
//
//    @Override
//    protected boolean setNX(String key, String value) {
//        return redis.process(commands -> commands.setnx(key, value) == 1);
//    }
//
//    @Override
//    protected String getSet(String key, String value) {
//        return redis.process(commands -> commands.getSet(key, value));
//    }
//
//    @Override
//    protected void delete(String key) {
//        redis.process(commands -> commands.del(key));
//    }
//
//
//
//    /**
//     * 简化使用
//     * {@link AbstractRedisLock#lock()}中的synchronized不起作用
//     **/
//    public static void lockAndUnlock(Redis redis, String lockKey, Consumer<String> lockConsumer) {
//        new RedisLockUtils(redis, lockKey).lockAndUnlock(lockConsumer);
//    }
//
//    public static <R> R lockAndUnlock(Redis redis, String lockKey, Function<String, R> lockFunction) {
//        return new RedisLockUtils(redis, lockKey).lockAndUnlock(lockFunction);
//    }
//
//    /**
//     * 简化使用
//     * {@link AbstractRedisLock#lock()}中的synchronized不起作用
//     **/
//    public static void lockAndUnlock(Redis redis, String lockKey, int timeoutMsecs, Consumer<String> lockConsumer) {
//        new RedisLockUtils(redis, lockKey, timeoutMsecs).lockAndUnlock(lockConsumer);
//    }
//
//    public static <R> R lockAndUnlock(Redis redis, String lockKey, int timeoutMsecs, Function<String, R> lockFunction) {
//        return new RedisLockUtils(redis, lockKey, timeoutMsecs).lockAndUnlock(lockFunction);
//    }
//
//    /**
//     * 简化使用
//     * {@link AbstractRedisLock#lock()}中的synchronized不起作用
//     **/
//    public static void lockAndUnlock(Redis redis, String lockKey, int timeoutMsecs, int expireMsecs, Consumer<String> lockConsumer) {
//        new RedisLockUtils(redis, lockKey, timeoutMsecs, expireMsecs).lockAndUnlock(lockConsumer);
//    }
//
//    public static <R> R lockAndUnlock(Redis redis, String lockKey, int timeoutMsecs, int expireMsecs, Function<String, R> lockFunction) {
//        return new RedisLockUtils(redis, lockKey, timeoutMsecs, expireMsecs).lockAndUnlock(lockFunction);
//    }
//
//
//}
